﻿/*
 * Created by SharpDevelop.
 * User: Usuario
 * Date: 06/11/2011
 * Time: 10:47 a.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Drawing;
using System.Windows.Forms;
using Business_Logic;
using Business_Entity;
using System.Collections.Generic;

namespace PetSoft.GUI.GestRecursos
{
	/// <summary>
	/// Description of GUIDatosProductoPedido.
	/// </summary>
	public partial class GUIDatosProductoPedido : Form
	{
		private BEProducto producto;
		private BEProveedor proveedor;
		private int cantidad;
		private int index;
		private String textoProv;
		private int constructor;
		private float precio;
		private List<BEProveedor> listaProveedor;
		
		public GUIDatosProductoPedido(int constructor, BEProducto prod, String p, int c, List<BEProveedor> listaProv)
		{
			//
			// The InitializeComponent() call is required for Windows Forms designer support.
			//
			InitializeComponent();
			this.constructor = constructor;
			if(this.constructor==2){//nuevo producto
				this.cantLBL.Text="                Precio:";
				this.cantValTXT.KeyPress += new KeyPressEventHandler(Utils.DecimalesPuntoTB);
				//this.provBTN.Hide();
			}
			else{//cantidad
				this.cantValTXT.KeyPress += new KeyPressEventHandler(Utils.SoloNumerosTB);				
			}
			this.producto = prod;
			this.textoProv = p;
			this.nomProdLBL.Text = this.producto.Nombre;
			this.Load += new EventHandler(GUIDatosProductoPedido_Load);
			if(c!=0)
				this.cantValTXT.Text = "" + c;
			this.proveedor = null;
			this.cantidad = 0;
			this.listaProveedor = listaProv;
			this.provTBL.DoubleClick += new EventHandler(dobleClick);
			//
			// TODO: Add constructor code after the InitializeComponent() call.
			//
		}
		
		private void dobleClick(object sender, EventArgs e){
			int aux = this.provTBL.CurrentRow.Index;
			if((bool)this.provTBL[2, aux].Value == true){
				this.provTBL[2, aux].Value = false;
			}
			else{
				this.provTBL[2, aux].Value = true;
			}
		}
		
		public BEProveedor getProveedor(){
			return this.proveedor;
		}
		
		public float getPrecio(){
			return this.precio;
		}
		
		public String getRSocialProv(){
			return this.textoProv;
		}
		
		public int getCantidad(){
			return cantidad;
		}
		
		private void GUIDatosProductoPedido_Load(object sender, EventArgs e){
			BLProductoProveedor prov = new BLProductoProveedor();
			BLProveedor blProv = new BLProveedor();
			List<BEProveedor> lista = null;
			if(this.constructor==1){
				lista = prov.getProveedoresByProductoFiorella(this.producto.Codigo);
				//MessageBox.Show("Prueba 1 " + lista.Count);
				foreach (BEProveedor p in lista) {
					if(p.RazonSocial==this.textoProv)
						this.provTBL.Rows.Add(p.IdProv, p.RazonSocial, true);
					else
						this.provTBL.Rows.Add(p.IdProv, p.RazonSocial, false);
				}
				this.cantProvLBL.Text = "" + this.provTBL.Rows.Count;
			}
			else{
				lista = blProv.getListaproveedores();
				foreach (BEProveedor p in lista) {
					int encontrado = 0;
					foreach (BEProveedor pProv in this.listaProveedor){
						if(pProv.IdProv==p.IdProv){
							encontrado = 1;
							break;
						}
					}
					if(encontrado==0)
						this.provTBL.Rows.Add(p.IdProv, p.RazonSocial, false);
				}
				this.cantProvLBL.Text = "" + this.provTBL.Rows.Count;
			}
		}
		
		
		void ProvBTNClick(object sender, EventArgs e)
		{
			int cont = 0, contAux = 0;
			foreach(DataGridViewRow fila in this.provTBL.Rows){
        		if(fila.Cells[0].Value != null && (bool)fila.Cells[0].Value){
        			index = contAux;
        			cont++;
        		}      		
        		contAux++;
        	} 
	        if(cont==0){
				Utils.MessageAviso("Debe seleccionar algún proveedor para asociar al producto.",null);
				
	        }
	        if(cont>1){
	        	Utils.MessageAviso("Debe seleccionar solo 1 proveedor.",null);
	        }
	        if(cont==1){
				BLProducto blProd = new BLProducto();				
				BEProveedor prov = blProd.getProveedorByCod(Int32.Parse(this.provTBL[1,index].Value.ToString()));
				this.proveedor = prov;
			}
		}
		
		void AcetpBTNClick(object sender, EventArgs e)
		{
			BLProducto blProd = new BLProducto();	
			int index = 0, contAux = 0, cont = 0;
			foreach(DataGridViewRow fila in this.provTBL.Rows){
        		if(fila.Cells[2].Value != null && (bool)fila.Cells[2].Value){
        			index = contAux;
        			cont++;
        		}      		
        		contAux++;
        	} 
			if(cont==0){
				if(this.provTBL.Rows.Count!=0)
	        		Utils.MessageAviso("Debe seleccionar algún proveedor para asociar al producto.",null);
				else{
					try{
						this.cantidad = Int32.Parse(this.cantValTXT.Text);
						this.proveedor = new BEProveedor();
						this.Close();
					}
					catch{
						Utils.MessageAviso("Debe indicar la cantidad a pedir.",null);
					}
				}
			}
			if(cont>1){
				Utils.MessageAviso("Debe seleccionar solo 1 proveedor para asociar al producto.",null);
			}
			if(cont==1){
				try{			
					BEProveedor prov = blProd.getProveedorByCod(Int32.Parse(this.provTBL[0,index].Value.ToString()));
			        //this.provTXT.Text = prov.RazonSocial;
					this.proveedor = prov;
					if(this.constructor==1)
						this.cantidad = Int32.Parse(this.cantValTXT.Text);
					else{
						this.precio = Single.Parse(this.cantValTXT.Text);
					}
					this.Close();
				}
				catch{
					if(this.constructor==1)
						Utils.MessageAviso("Debe indicar la cantidad a pedir.",null);
					else
						Utils.MessageAviso("Debe indicar el precio del producto.",null);
					this.cantValTXT.Focus();
				}
			}
		}
		
		void CanBTNClick(object sender, EventArgs e)
		{
			this.cantidad = 0;
			this.proveedor = null;
			this.Close();
		}
	}
}
